package com.uzai.console.service.feign;

import com.uzai.console.common.UzaiRespVo;
import com.uzai.console.common.web.interceptor.FeignCommonHeaderInterceptor;
import com.uzai.console.dto.feign.report.*;
import com.uzai.console.service.feign.impl.UzaiReportFeignFallbackFactory;
import com.uzai.console.vo.feign.report.*;
import com.uzai.console.vo.main.main.ProfitVo;
import com.uzai.console.vo.report.v2.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 悠聊
 * @Auther: liuqi
 * @Date: 2021/11/24 16:22
 * @Description:
 */
@Component
@FeignClient(value = "uzai-report-server", configuration = FeignCommonHeaderInterceptor.class, fallbackFactory = UzaiReportFeignFallbackFactory.class)
public interface UzaiReportServerFeignService {

    /**
     * 机器人数据列表报表
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param robotDataReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/robot/search")
    UzaiRespVo<List<RobotDataReportFeignVo>> robotDataReport(@RequestBody RobotDataReportFeignDto robotDataReportFeignDto);

    /**
     * 粉丝价值报表列表查询
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param fansValueReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/fans/search")
    UzaiRespVo<List<FansValueReportFeignVo>> fansSearch(@RequestBody FansValueReportFeignDto fansValueReportFeignDto);

    /**
     * 粉丝价值报表指标统计
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param fansValueReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/fans/indicator/search")
    UzaiRespVo<FansValueReportFeignVo> fansIndicatorSerach(@RequestBody FansValueReportFeignDto fansValueReportFeignDto);

    /**
     * 订单收益报表列表查询
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param orderRevenueReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/orderRevenue/search")
    UzaiRespVo<List<OrderRevenueReportFeignVo>> orderRevenueSearch(@RequestBody OrderRevenueReportFeignDto orderRevenueReportFeignDto);

    /**
     * 订单收益报表指标统计
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param orderRevenueReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/orderRevenue/indicator/search")
    UzaiRespVo<OrderRevenueIndicatorReportFeignVo> orderRevenueIndicatorSerach(@RequestBody OrderRevenueReportFeignDto orderRevenueReportFeignDto);

    /**
     * 支出统计报表列表查询
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param expenseCountRepeortFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/expenseCount/search")
    UzaiRespVo<List<ExpenseCountReportFeignVo>> expenseCountSearch(@RequestBody ExpenseCountReportFeignDto expenseCountRepeortFeignDto);

    /**
     * 支出统计报表指标统计
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param expenseCountReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/expenseCount/indicator/search")
    UzaiRespVo<ExpenseCountIndicatorReportFeignVo> expenseCountIndicatorSerach(@RequestBody ExpenseCountReportFeignDto expenseCountReportFeignDto);

    /**
     * 实时总览报表指标统计（旧版包括整页得数据统计）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/realTimeOverview/search")
    UzaiRespVo<RealTimeOverviewReportFeignVo> realTimeOverviewSerach(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 首页报表
     * @param realTimeOverviewReportFeignDto
     * @return
     */
    @PostMapping("/inner/api/v2/dashboard")
    UzaiRespVo<ProfitVo> dashboard(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 实时总览报表指标统计-利润佣金（只统计实时总览第一块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/realTimeOverview/one")
    UzaiRespVo<RealTimeOverviewReportFeignVo> realTimeOverviewSerach_commission(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 实时总览报表指标统计-进粉数据（只统计实时总览第二块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/realTimeOverview/two")
    UzaiRespVo<RealTimeOverviewReportFeignVo> realTimeOverviewSerach_addFans(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 实时总览报表指标统计-推广支出（只统计实时总览第四块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/realTimeOverview/four")
    UzaiRespVo<RealTimeOverviewReportFeignVo> realTimeOverviewSerach_expend(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);


    /**
     * 实时总览报表指标统计-进粉数据（只统计实时总览第二块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v1/realTimeOverview/three")
    UzaiRespVo<RealTimeOverviewReportFeignVo> realTimeOverviewSerach_takeBal(RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);


    //---------以下为新版报表----------

    /**
     * 新版实时总览报表指标统计-订单信息（只统计实时总览第一块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v2/realTimeOverview/order/info")
    UzaiRespVo<RealTimeOverviewV2OrderVo> realTimeOverviewSerachV2_orderInfo(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 新版实时总览报表指标统计-会员信息（只统计实时总览第二块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v2/realTimeOverview/user/info")
    UzaiRespVo<RealTimeOverviewV2UserVo> realTimeOverviewSerachV2_userInfo(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 新版实时总览报表指标统计-提现信息（只统计实时总览第三块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v2/realTimeOverview/takebal/info")
    UzaiRespVo<RealTimeOverviewV2UserTakeVo> realTimeOverviewV2Serach_takeInfo(@RequestBody RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 新版实时总览报表指标统计-营销奖励（只统计实时总览第四块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v2/realTimeOverview/marketing/info")
    UzaiRespVo<RealTimeOverviewV2MarketingVo> realTimeOverviewSerach_marketingInfo(RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

    /**
     * 新版实时总览报表指标统计-支出统计（只统计实时总览第五块数据）
     * @author jitwxs
     * @date 2021/11/29 10:25
     * @param realTimeOverviewReportFeignDto
     * @return com.uzai.console.common.UzaiRespVo<java.lang.String>
     */
    @PostMapping("/inner/api/v2/realTimeOverview/expend/info")
    UzaiRespVo<RealTimeOverviewV2ExpendVo> realTimeOverviewSerach_expendInfo(RealTimeOverviewReportFeignDto realTimeOverviewReportFeignDto);

}
